#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <memory>
#include <iostream>
#include <functional>
using namespace std;

const char* path = "/dev/pts/0";

// int main() 
// {
//     unique_ptr<FILE, function<void(FILE*)>> fp(fopen(path, "r"), [](FILE* p) { pclose(p);});
//     // 检查文件描述符是否有效
//     if(fp == nullptr) {
//         perror("open");
//         return -1;
//     }
//     // printf("%d\n", fp->_fileno);
//     dup2(fileno(fp.get()), 1);        // 用该文件描述符替换标准输出
//     printf("hello world\n");
//     // fprintf(fp.get(), "hello world");
//     return 0;
// }

// int main() 
// {
//     int fd = open(path, O_WRONLY);
//     // 检查文件描述符是否有效
//     if(fd == -1) {
//         perror("open");
//         return -1;
//     }
//     dup2(fd, 2);        // 用该文件描述符替换标准输出
//     // printf("hello world\n");
//     cerr << "hello world\n";
//     close(fd);
//     return 0;
// }


///////////////////////////////////////////////////////
int openTerm() 
{
    int fd = open(path, O_WRONLY);
    // 检查文件描述符是否有效
    if(fd == -1) {
        perror("open");
        return -1;
    }
    dup2(fd, 2);        // 用该文件描述符替换标准错误
    close(fd);
    return 0;
}
